perm filename EADD2.2[EAL,HE]1 blob
sn#679409 filedate 1982-09-27 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 {$NOMAIN Editor: aux routines for addStmnt }
C00005 00003 procedure addst2 (nextLinep: cursorpp sp: statementp) external
C00009 ENDMK
C⊗;
{$NOMAIN Editor: aux routines for addStmnt }
%include eedit.hdr;
{ Externally defined routines from elsewhere: }
(* From PAUX1 *)
function checkArg(n: nodep; d: datatypes): nodep; external;
(* From PAUX2 *)
function evalOrder(what,last: nodep; pcons: boolean): nodep; external;
procedure relExpr(n: nodep); external;
(* From ETOKEN *)
procedure eDimCheck(n,d: nodep); external;
(* From EPUTST *)
procedure putstmnt(s: statementp; indent, plevel: integer); external;
(* From EEXPAR *)
function eExprParse: nodep; external;
procedure eGetArgs(opn: nodep); external;
(* From EPAR3A *)
procedure eForParse(st: statementp); external;
procedure eAffixParse(st: statementp); external;
procedure eAssignParse(st: statementp); external;
procedure eUnfixParse(st: statementp); external;
procedure eEnableParse(st: statementp); external;
(* From EPAR3F *)
procedure eMoveParse(st: statementp; bp: boolean); external;
procedure eStopParse(st: statementp); external;
(* From PP *)
procedure ppLine; external;
procedure ppOutNow; external;
procedure ppChar(ch: ascii); external;
procedure pp5(ch: c5str; length: integer); external;
procedure pp10(ch: cstring; length: integer); external;
procedure pp10L(ch: cstring; length: integer); external;
procedure pp20(ch: c20str; length: integer); external;
procedure pp20L(ch: c20str; length: integer); external;
procedure addst2 (nextLinep: cursorpp; sp: statementp); external;
procedure addst2 ;
var b: boolean;
begin
with eCurToken, sp↑ do
case stmnt of
pausetype: begin
ptime := checkArg(eExprParse,svaltype);
eDimCheck(ptime,timedim↑.dim); (* right dimension? *)
exprs := evalOrder(ptime,nil,true);
end;
printtype,
prompttype,
aborttype: begin
pnode↑.arg2 := nil;
eGetArgs(pnode); (* pretend we just saw a queryop *)
plist := pnode↑.arg2; (* store away pointer to print list *)
if plist <> nil then
begin
exprs := evalOrder(plist,nil,false);
setUp := true;
setCursor := false;
curLine := 1;
putStmnt(sp,nextLinep↑.ind,99); (* see how long we are *)
setUp := false;
end;
debugLev := 0; (* for abort *)
end;
assigntype: begin (* shouldn't get here *)
eBackup := true;
eAssignParse(sp);
end;
signaltype,
waittype: begin
event := checkArg(eExprParse,eventtype);
exprs := nil;
with event↑ do (* make sure it's a variable *)
begin
b := (ntype = leafnode) and (ltype = varitype); (* hack *)
if not (b or ((ntype = exprnode) and (op = arefop))) then
begin (* no good *)
pp20L(' Need an event varia',20); pp10('ble here ',8); ppLine;
relExpr(event);
event := nil;
end
else
if ntype <> leafnode then exprs := evalOrder(arg2,nil,true);
end;
end;
enabletype,
disabletype: begin
eEnableParse(sp);
end;
affixtype: begin
fieldNum := 1;
eAffixParse(sp);
setUp := true; (* check if it'll takes two lines to print *)
putStmnt(sp,cursorStack[cursor].ind,99);
setUp := false;
end;
unfixtype: begin
eUnfixParse(sp);
end;
movetype,
opentype,
closetype,
centertype,
operatetype: begin
clauses := nil;
eMoveParse(sp,true);
end;
stoptype: begin
eStopParse(sp);
end;
retrytype: begin
(* *** need to check in the body of an error handler *** *)
(* *** also need to set .olevel *** *)
end;
wristtype: begin (* wristParse(sp); *) end;
(* nothing to do for: setbasetype *)
(* *** for now we're ignoring: requiretype, definetype & dimdeftype *** *)
otherwise {do nothing};
end;
end;